#ifndef _STM32FXX_PINS_
#define _STM32FXX_PINS_

#define _GPIOA_MAP 0
#define _GPIOB_MAP 1
#define _GPIOC_MAP 2
#define _GPIOD_MAP 3
#define _GPIOE_MAP 4
#define _GPIOF_MAP 5
#define _GPIOG_MAP 6
#define _GPIOH_MAP 7
#define _GPIOI_MAP 8
#define _GPIOJ_MAP 9
#define _GPIOK_MAP 10

#define PA0  ((_GPIOA_MAP<<8) | 0)
#define PA1  ((_GPIOA_MAP<<8) | 1)
#define PA2  ((_GPIOA_MAP<<8) | 2)
#define PA3  ((_GPIOA_MAP<<8) | 3)
#define PA4  ((_GPIOA_MAP<<8) | 4)
#define PA5  ((_GPIOA_MAP<<8) | 5)
#define PA6  ((_GPIOA_MAP<<8) | 6)
#define PA7  ((_GPIOA_MAP<<8) | 7)
#define PA8  ((_GPIOA_MAP<<8) | 8)
#define PA9  ((_GPIOA_MAP<<8) | 9)
#define PA10  ((_GPIOA_MAP<<8) | 10)
#define PA11  ((_GPIOA_MAP<<8) | 11)
#define PA12  ((_GPIOA_MAP<<8) | 12)
#define PA13  ((_GPIOA_MAP<<8) | 13)
#define PA14  ((_GPIOA_MAP<<8) | 14)
#define PA15  ((_GPIOA_MAP<<8) | 15)

#define PB0  ((_GPIOB_MAP<<8) | 0)
#define PB1  ((_GPIOB_MAP<<8) | 1)
#define PB2  ((_GPIOB_MAP<<8) | 2)
#define PB3  ((_GPIOB_MAP<<8) | 3)
#define PB4  ((_GPIOB_MAP<<8) | 4)
#define PB5  ((_GPIOB_MAP<<8) | 5)
#define PB6  ((_GPIOB_MAP<<8) | 6)
#define PB7  ((_GPIOB_MAP<<8) | 7)
#define PB8  ((_GPIOB_MAP<<8) | 8)
#define PB9  ((_GPIOB_MAP<<8) | 9)
#define PB10  ((_GPIOB_MAP<<8) | 10)
#define PB11  ((_GPIOB_MAP<<8) | 11)
#define PB12  ((_GPIOB_MAP<<8) | 12)
#define PB13  ((_GPIOB_MAP<<8) | 13)
#define PB14  ((_GPIOB_MAP<<8) | 14)
#define PB15  ((_GPIOB_MAP<<8) | 15)

#define PC0  ((_GPIOC_MAP<<8) | 0)
#define PC1  ((_GPIOC_MAP<<8) | 1)
#define PC2  ((_GPIOC_MAP<<8) | 2)
#define PC3  ((_GPIOC_MAP<<8) | 3)
#define PC4  ((_GPIOC_MAP<<8) | 4)
#define PC5  ((_GPIOC_MAP<<8) | 5)
#define PC6  ((_GPIOC_MAP<<8) | 6)
#define PC7  ((_GPIOC_MAP<<8) | 7)
#define PC8  ((_GPIOC_MAP<<8) | 8)
#define PC9  ((_GPIOC_MAP<<8) | 9)
#define PC10  ((_GPIOC_MAP<<8) | 10)
#define PC11  ((_GPIOC_MAP<<8) | 11)
#define PC12  ((_GPIOC_MAP<<8) | 12)
#define PC13  ((_GPIOC_MAP<<8) | 13)
#define PC14  ((_GPIOC_MAP<<8) | 14)
#define PC15  ((_GPIOC_MAP<<8) | 15)

#define PD0  ((_GPIOD_MAP<<8) | 0)
#define PD1  ((_GPIOD_MAP<<8) | 1)
#define PD2  ((_GPIOD_MAP<<8) | 2)
#define PD3  ((_GPIOD_MAP<<8) | 3)
#define PD4  ((_GPIOD_MAP<<8) | 4)
#define PD5  ((_GPIOD_MAP<<8) | 5)
#define PD6  ((_GPIOD_MAP<<8) | 6)
#define PD7  ((_GPIOD_MAP<<8) | 7)
#define PD8  ((_GPIOD_MAP<<8) | 8)
#define PD9  ((_GPIOD_MAP<<8) | 9)
#define PD10  ((_GPIOD_MAP<<8) | 10)
#define PD11  ((_GPIOD_MAP<<8) | 11)
#define PD12  ((_GPIOD_MAP<<8) | 12)
#define PD13  ((_GPIOD_MAP<<8) | 13)
#define PD14  ((_GPIOD_MAP<<8) | 14)
#define PD15  ((_GPIOD_MAP<<8) | 15)

#define PE0  ((_GPIOE_MAP<<8) | 0)
#define PE1  ((_GPIOE_MAP<<8) | 1)
#define PE2  ((_GPIOE_MAP<<8) | 2)
#define PE3  ((_GPIOE_MAP<<8) | 3)
#define PE4  ((_GPIOE_MAP<<8) | 4)
#define PE5  ((_GPIOE_MAP<<8) | 5)
#define PE6  ((_GPIOE_MAP<<8) | 6)
#define PE7  ((_GPIOE_MAP<<8) | 7)
#define PE8  ((_GPIOE_MAP<<8) | 8)
#define PE9  ((_GPIOE_MAP<<8) | 9)
#define PE10  ((_GPIOE_MAP<<8) | 10)
#define PE11  ((_GPIOE_MAP<<8) | 11)
#define PE12  ((_GPIOE_MAP<<8) | 12)
#define PE13  ((_GPIOE_MAP<<8) | 13)
#define PE14  ((_GPIOE_MAP<<8) | 14)
#define PE15  ((_GPIOE_MAP<<8) | 15)

#define PF0  ((_GPIOF_MAP<<8) | 0)
#define PF1  ((_GPIOF_MAP<<8) | 1)
#define PF2  ((_GPIOF_MAP<<8) | 2)
#define PF3  ((_GPIOF_MAP<<8) | 3)
#define PF4  ((_GPIOF_MAP<<8) | 4)
#define PF5  ((_GPIOF_MAP<<8) | 5)
#define PF6  ((_GPIOF_MAP<<8) | 6)
#define PF7  ((_GPIOF_MAP<<8) | 7)
#define PF8  ((_GPIOF_MAP<<8) | 8)
#define PF9  ((_GPIOF_MAP<<8) | 9)
#define PF10  ((_GPIOF_MAP<<8) | 10)
#define PF11  ((_GPIOF_MAP<<8) | 11)
#define PF12  ((_GPIOF_MAP<<8) | 12)
#define PF13  ((_GPIOF_MAP<<8) | 13)
#define PF14  ((_GPIOF_MAP<<8) | 14)
#define PF15  ((_GPIOF_MAP<<8) | 15)

#define PG0  ((_GPIOG_MAP<<8) | 0)
#define PG1  ((_GPIOG_MAP<<8) | 1)
#define PG2  ((_GPIOG_MAP<<8) | 2)
#define PG3  ((_GPIOG_MAP<<8) | 3)
#define PG4  ((_GPIOG_MAP<<8) | 4)
#define PG5  ((_GPIOG_MAP<<8) | 5)
#define PG6  ((_GPIOG_MAP<<8) | 6)
#define PG7  ((_GPIOG_MAP<<8) | 7)
#define PG8  ((_GPIOG_MAP<<8) | 8)
#define PG9  ((_GPIOG_MAP<<8) | 9)
#define PG10  ((_GPIOG_MAP<<8) | 10)
#define PG11  ((_GPIOG_MAP<<8) | 11)
#define PG12  ((_GPIOG_MAP<<8) | 12)
#define PG13  ((_GPIOG_MAP<<8) | 13)
#define PG14  ((_GPIOG_MAP<<8) | 14)
#define PG15  ((_GPIOG_MAP<<8) | 15)

#define PH0  ((_GPIOH_MAP<<8) | 0)
#define PH1  ((_GPIOH_MAP<<8) | 1)
#define PH2  ((_GPIOH_MAP<<8) | 2)
#define PH3  ((_GPIOH_MAP<<8) | 3)
#define PH4  ((_GPIOH_MAP<<8) | 4)
#define PH5  ((_GPIOH_MAP<<8) | 5)
#define PH6  ((_GPIOH_MAP<<8) | 6)
#define PH7  ((_GPIOH_MAP<<8) | 7)
#define PH8  ((_GPIOH_MAP<<8) | 8)
#define PH9  ((_GPIOH_MAP<<8) | 9)
#define PH10  ((_GPIOH_MAP<<8) | 10)
#define PH11  ((_GPIOH_MAP<<8) | 11)
#define PH12  ((_GPIOH_MAP<<8) | 12)
#define PH13  ((_GPIOH_MAP<<8) | 13)
#define PH14  ((_GPIOH_MAP<<8) | 14)
#define PH15  ((_GPIOH_MAP<<8) | 15)

#define PI0  ((_GPIOI_MAP<<8) | 0)
#define PI1  ((_GPIOI_MAP<<8) | 1)
#define PI2  ((_GPIOI_MAP<<8) | 2)
#define PI3  ((_GPIOI_MAP<<8) | 3)
#define PI4  ((_GPIOI_MAP<<8) | 4)
#define PI5  ((_GPIOI_MAP<<8) | 5)
#define PI6  ((_GPIOI_MAP<<8) | 6)
#define PI7  ((_GPIOI_MAP<<8) | 7)
#define PI8  ((_GPIOI_MAP<<8) | 8)
#define PI9  ((_GPIOI_MAP<<8) | 9)
#define PI10  ((_GPIOI_MAP<<8) | 10)
#define PI11  ((_GPIOI_MAP<<8) | 11)
#define PI12  ((_GPIOI_MAP<<8) | 12)
#define PI13  ((_GPIOI_MAP<<8) | 13)
#define PI14  ((_GPIOI_MAP<<8) | 14)
#define PI15  ((_GPIOI_MAP<<8) | 15)

#define PJ0  ((_GPIOJ_MAP<<8) | 0)
#define PJ1  ((_GPIOJ_MAP<<8) | 1)
#define PJ2  ((_GPIOJ_MAP<<8) | 2)
#define PJ3  ((_GPIOJ_MAP<<8) | 3)
#define PJ4  ((_GPIOJ_MAP<<8) | 4)
#define PJ5  ((_GPIOJ_MAP<<8) | 5)
#define PJ6  ((_GPIOJ_MAP<<8) | 6)
#define PJ7  ((_GPIOJ_MAP<<8) | 7)
#define PJ8  ((_GPIOJ_MAP<<8) | 8)
#define PJ9  ((_GPIOJ_MAP<<8) | 9)
#define PJ10  ((_GPIOJ_MAP<<8) | 10)
#define PJ11  ((_GPIOJ_MAP<<8) | 11)
#define PJ12  ((_GPIOJ_MAP<<8) | 12)
#define PJ13  ((_GPIOJ_MAP<<8) | 13)
#define PJ14  ((_GPIOJ_MAP<<8) | 14)
#define PJ15  ((_GPIOJ_MAP<<8) | 15)

#define PK0  ((_GPIOK_MAP<<8) | 0)
#define PK1  ((_GPIOK_MAP<<8) | 1)
#define PK2  ((_GPIOK_MAP<<8) | 2)
#define PK3  ((_GPIOK_MAP<<8) | 3)
#define PK4  ((_GPIOK_MAP<<8) | 4)
#define PK5  ((_GPIOK_MAP<<8) | 5)
#define PK6  ((_GPIOK_MAP<<8) | 6)
#define PK7  ((_GPIOK_MAP<<8) | 7)
#define PK8  ((_GPIOK_MAP<<8) | 8)
#define PK9  ((_GPIOK_MAP<<8) | 9)
#define PK10  ((_GPIOK_MAP<<8) | 10)
#define PK11  ((_GPIOK_MAP<<8) | 11)
#define PK12  ((_GPIOK_MAP<<8) | 12)
#define PK13  ((_GPIOK_MAP<<8) | 13)
#define PK14  ((_GPIOK_MAP<<8) | 14)
#define PK15  ((_GPIOK_MAP<<8) | 15)


#define GPIO_GET_PORT(n) (((n)>>8) & 0xFF)
#define GPIO_GET_PIN(n) ((n) & 0xFF)

#endif
